<?php

namespace app\service\exception;

use app\service\Y;
use think\exception\Handle;
use think\exception\HttpResponseException;
use think\Response;
use Throwable;

class ExceptionHandler extends Handle
{

    // 需要返回客户端当前请求的URL路径
    public function render($request, Throwable $e): Response {
        // 参数验证错误
        if ($e instanceof ApiException) {
            // api异常返回
            return Y::error($e->msg, [$e->getFile(), $e->getLine()], $e->errorCode);
        } else if ($e instanceof BaseException) {
            // base异常返回
            return Y::error($e->msg, [$e->getFile(), $e->getLine()], $e->errorCode);
        } else if ($request->isAjax()) {
            return Y::error($e->getMessage(), [$e->getFile(), $e->getLine()], 1);
        } else {
            if ($e instanceof HttpResponseException) {
                // 其他错误交给系统处理
                return parent::render($request, $e);
            }
            return Y::error($e->getMessage(), [$e->getFile(), $e->getLine()], 1);
        }
    }
}